package com.shycloud.mido.member.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shycloud.mido.common.core.util.R;
import com.shycloud.mido.member.api.dto.MemberDTO;
import com.shycloud.mido.member.api.entity.Member;
import com.shycloud.mido.member.api.vo.AttestationVO;
import com.shycloud.mido.member.api.vo.MemberDetailVO;
import com.shycloud.mido.member.api.vo.MemberVO;
import com.shycloud.mido.member.api.vo.MembershipInfoVO;
import com.shycloud.mido.member.api.vo.MembershipVO;
import com.shycloud.mido.member.api.vo.TeacherInfoVO;

/**
 * 会员管理
 *
 * @author lxy
 * @date 2019-02-27 14:10:49
 */
public interface MemberService extends IService<Member> {

//	/**
//	 * 查询用户信息
//	 *
//	 * @param sysUser 用户
//	 * @return userInfo
//	 */
//	Member findMember(Member sysUser);

	/**
	 * 分页查询会员信息
	 *
	 * @param page      分页对象
	 * @param memberDTO 参数列表
	 * @return
	 */
	IPage<MemberVO> getMemberVosPage(Page page, MemberDTO memberDTO);



	/**
	 * 通过id锁定会员
	 *
	 * @param ids ids
	 * @return
	 */
	boolean lockByIds(List<String> ids);

	/**
	 * 通过id解锁会员
	 *
	 * @param ids ids
	 * @return
	 */
	boolean unlockByIds(List<String> ids);

	/**
	 * 通过id删除会员
	 *
	 * @param ids ids
	 * @return
	 */
	boolean deleteByIds(List<String> ids);

	/**
	 * 通过id查询关联家长
	 *
	 * @param id id
	 * @return
	 */
	List<Member> getAssociatedParents(String id);

	/**
	 * 通过id查询关联学生
	 *
	 * @param id id
	 * @return
	 */
	List<Member> getAssociatedStudents(String id);

	/**
	 * 解绑会员
	 *
	 * @param studentId studentId
	 * @param parentId  parentId
	 * @return
	 */
	boolean unbindMember(String parentId, String studentId);

	/**
	 * 通过id获取会员身份
	 *
	 * @param id 会员Id
	 * @return List<MembershipVO>
	 */
	List<MembershipVO> getMembership(String id);

	/**
	 * 通过id获取认证身份
	 *
	 * @param id 会员Id
	 * @return R List
	 */
	List<AttestationVO> getAttestation(String id);

	/**
	 * 通过id获取教师信息
	 *
	 * @param id
	 * @return
	 */
	List<TeacherInfoVO> getTeacherInfo(String id);

	/**
	 * 注册会员
	 *
	 * @param member 会员信息
	 * @return
	 */
	R saveMember(Member member);

	/**
	 * 获取会员IDList
	 *
	 * @param type
	 * @return
	 */
	List<String> getMemberIdlist(String type);

	/**
	 * 后台管理注册用户
	 *
	 * @param memberDetailVO 会员信息
	 * @return
	 */
	String adminSaveMember(MemberDetailVO memberDetailVO);

	/**
	 * 后台管理修改密码
	 *
	 * @param memberId 会员ID
	 * @param pwd      密码
	 * @return
	 */
	Boolean updPwd(String memberId, String pwd);

	/**
	 * 更新会员是否注册机构
	 *
	 * @param memberId 会员ID
	 * @param is       是否注册机构 0-未注册, 1-已注册
	 * @return
	 */
	R isInstitution(String memberId, String is);

	/**
	 * 购买会员-信息
	 *
	 * @param memberId 会员Id
	 * @return MembershipInfoVO
	 */
	MembershipInfoVO membershipInfo(String memberId);

	/**
	 * 更新会员个推会员标识
	 *
	 * @param memberId 会员ID
	 * @param clientId 个推会员标识
	 * @return R
	 */
	R updClientId(String memberId, String clientId);

	/**
	 * 批量注册高级会员
	 *
	 * @param phoneList 电话列表
	 * @return
	 */
	R testMember(List<Map<String, String>> phoneList);

	/**
	 * 上音图书扫码——会员注册
	 *
	 * @param phone
	 * @return
	 */
	Member newSave(String phone);

	/**
	 * 官网注册
	 *
	 * @param phone
	 * @param pwd
	 */
	R webRegister(String phone, String pwd);

}
